#ifndef __GAME_CONTROLLER_LEVEL_CONTROLLER_HPP__
#define __GAME_CONTROLLER_LEVEL_CONTROLLER_HPP__

#include "game_controller\ih\game_controller_ilevel_controller.hpp"

#include "game_controller\headers\game_controller_objects_creator.hpp"

namespace GameModel {

	struct IObjectFactory;
}

namespace GameController {

class LevelController
	:	public ILevelController
{

public:

	LevelController( std::shared_ptr< GameModel::IObjectFactory > _gameModelFactory );

	virtual ~LevelController();

public:

	/*virtual*/ std::shared_ptr< ILevel > getCurrentLevel() const;

	/*virtual*/ void loadLevel( int _levelIdentificator );

private:

	std::shared_ptr< ILevel > m_currentLevel;

	ObjectCreator m_objectCreator;

};

} // namespace GameController

#endif // __GAME_CONTROLLER_LEVEL_CONTROLLER_HPP__
